package com.zjsru.plan2024.oneday;

/**
 * LCP 61. 气温变化趋势
 *
 * @Author: cookLee
 * @Date: 2024-06-21
 */
public class TemperatureTrend {

    /**
     * 主
     * \
     * 若第 i+1 天的气温 高于 第 i 天，为 上升 趋势
     * 若第 i+1 天的气温 等于 第 i 天，为 平稳 趋势
     * 若第 i+1 天的气温 低于 第 i 天，为 下降 趋势
     * \
     * 输入： temperatureA = [21,18,18,18,31] temperatureB = [34,32,16,16,17]
     * 输出：2
     * 解释：如下表所示， 第 2～4 天两地气温变化趋势相同，且持续时间最长，因此返回 4-2=2
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        int[] temperatureA = new int[]{21, 18, 18, 18, 31};
        int[] temperatureB = new int[]{34, 32, 16, 16, 17};
        TemperatureTrend temperatureTrend = new TemperatureTrend();
        System.out.println(temperatureTrend.temperatureTrend(temperatureA, temperatureB));

    }

    /**
     * 温度趋势
     *
     * @param temperatureA 温度尿素
     * @param temperatureB 温度b
     * @return int
     */
    public int temperatureTrend(int[] temperatureA, int[] temperatureB) {
        //记录总数
        int ans = 0;
        //记录当前符合条件的数量
        int curr = 0;
        int len = temperatureA.length;

        for (int i = 1; i < len; i++) {
            int resultA = this.helper(temperatureA[i - 1], temperatureA[i]);
            int resultB = this.helper(temperatureB[i - 1], temperatureB[i]);
            if (resultA == resultB) {
                curr++;
                ans = Math.max(ans, curr);
            } else {
                //不满足条件, 则将定义的临时数量清空
                curr = 0;
            }
        }
        return ans;
    }

    /**
     * 帮手
     * 计算气温助手类
     *
     * @param curr 当天气温
     * @param pre  明天气温
     * @return int
     */
    private int helper(int curr, int pre) {
        if (curr == pre) {
            return 0;
        }
        return curr > pre ? -1 : 1;
    }

}
